﻿using Microsoft.Win32;
using Stankovita.Model;
using System;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Navigation;

namespace Stankovita.Program.Pages.AddEditPages
{
    /// <summary>
    /// Логика взаимодействия для AddEditManufactures.xaml
    /// </summary>
    public partial class AddEditManufactures : Page
    {
        // Поле для хранения экземпляра добавляемого станка
        private readonly Manufactures machine = new Manufactures();

        public AddEditManufactures(Manufactures selectMachine)
        {
            InitializeComponent();
            if (selectMachine != null)
            {
                machine = selectMachine;
                GlobalVaribles.checkOnEdit = true;
            }
            // Передача объекта класса для участия в привязке данных
            DataContext = machine;
        }

        // Выбрать путь к фото
        private void ChooseImageBtn_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofg = new OpenFileDialog();
            if (ofg.ShowDialog() == true && !String.IsNullOrWhiteSpace(ofg.FileName))
            {
                PathToPhotoTxb.Text = ofg.FileName.ToString();
                PathToPhotoTxb.Focus();
            }
        }

        // Сохранить данные
        private void SaveMachineBtn_Click(object sender, RoutedEventArgs e)
        {
            // Предварительная проверка на количесто символов, заполняемость
            StringBuilder errors = new StringBuilder();
            if (string.IsNullOrWhiteSpace(machine.nameMachine))
                errors.AppendLine("* Название станка не введено!");
            foreach (var record in Entities.GetContext().Manufactures)
            {
                if (record.nameMachine == machine.nameMachine && GlobalVaribles.checkOnEdit == false)
                    errors.AppendLine("* Такое название станка уже существует!");
            }
            if (string.IsNullOrWhiteSpace(machine.dateProd.ToString()))
                errors.AppendLine("* Дата изготовления станка не введена!");
            if (machine.cost == 0 || string.IsNullOrWhiteSpace(machine.cost.ToString()))
                errors.AppendLine("* Стоимость не может быть равна нулю!");
            if (machine.discount > 100)
                errors.AppendLine("* Скидка не может быть больше 100%");

            // Если есть ошибки, то вывести это
            if (errors.Length > 0)
            {
                MessageBox.Show(errors.ToString());
                return;
            }

            // Добавлить новую запись
            if (machine.ID_machine == 0)
                Entities.GetContext().Manufactures.Add(machine);

            try
            {
                Entities.GetContext().SaveChanges();
                MessageBox.Show("Данные сохранены");

                NavigationService.Navigate(new View());
            }
            catch (Exception ex)
            { MessageBox.Show(ex.Message); }
        }

        // Вернуться на страницу просмотра
        private void BackBtn_Click(object sender, RoutedEventArgs e)
        {
            GlobalVaribles.checkOnEdit = false;
            NavigationService.Navigate(new View());
        }

        // Запрет на ввод букв в поле стоимости
        private void InputCostTxb_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
        }

        // Запрет на ввод букв в поле скидки
        private void InputDiscountTxb_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key < Key.D0 || e.Key > Key.D9) e.Handled = true;
        }
    }
}
